Succubus Heart DEV NOTES - TODO

This document outlines planned changes/additions to Succubus Heart and their priority. Wasn't originally written for public reading so it's going to be a mess with typos, strange wording, and various other quirks.

Definitions
	Backend 	: Unseen mechanics for the backend
	Systems		: Any gameplay element that affects general system functions
	Menu		: MCM specific without any system effects
	Passives	: Related to Passive Skills
	Actives		: Related to Active Skills
	Forge		: Related to Soul Forge systems
	Soul Pets	: Related to Soul Pets systems
	misc		: Other nonsense

Milestone Markers (Incomplete)
	SUH 5.0 :
		Fix any mechanics broken by updates
		Clear major bugs from Soul Pets system
			Ensure it summons the appropriate pet
			Ensure it names them correctly
			Fix follower bugs related to the summons system
				(This has become optional, I have no freakin' clue how to fix these issues Q.Q)
		Replace Skill Levels system with new Skill XP System
		Add UIextentions version of Heart Levels Menu
		Add UIextentions version of Soul Pets summoning and management
		Add Hotkeys for basic functions, namely Soul Pets management
		Replace Perks system with basic version of Titles system
			(May only implement a single leveling Title for this system initially)
			Potentially enable the addition of extra titles via external scripts
		Add a couple new Active Spells / Abilities
			Specifically an active Charm Skill (Will replace Enrage/Entice)

Working...
	Display Raw Status Caps in the Passives MCM (Replace "BDSM Rating" in top left)
	Evaluate and Optimize the OnHit code
	Evaluate and Optimize Soul Pet summoning/management code
Checking...
	
<---------------------------------->
<--------- Investigating ---------->
<---------------------------------->

Backend
	Try and see if the newer SPID systems would help make functions more reliable and performant (would add a mod requirement)
Systems
	Check teleporting even when DOM is disabled
	Re-introducing combat/exploration spells
	Optional integrations with Sexlab Arousal
	Add "Respawn at Home" function to Death Override Mode
	Milk Mod Integration patches?
	Sexlab Arousal integration (Would take the place of Succubus Heart's Arousal system)
	At high arousal, potentially force no/reduce regen rates in Starved state
	In combat seduction, when SPID is enabled (and spell effect can be trusted) apply a "disable" when animation for player registers
Menu
	Investigate "XP Gain Rate" in settings not displaying under 100% properly
	Giving DOM it's own menu with additional tracking (Treat it like a separate mode similar to Soul Pets)
	Transition to Tranlatable strings in the MCM (Would allow others to make thier own translation of the MCM)
		MAJOR ISSUE : I use a lot of code to produce the text in the MCM, however this isn't possible with translated strings...
		Will need to test, but I think maybe each entry could be divided up into several translatable strings, but I don't think this will work easily
Passives
	Investigate "Regal Glow" Not applying proper armor rating
Actives
Forge
Soul Pets
	Clear follower count after a soul pet is desummoned or dies (players can't recruit other followers after summoning a pet)
	Investigate Animal/Creature being captured as "PET" and summoning a random creature instead of captured one
	Becoming aggro when summoned even if there's no enemies near
misc
	Investigate "ordinator" skill levels resetting
	Vigilant of St. Aggro setting untoggles when "Transforming"
	Check on animations canceling AI? (Not sure how this is SuH related but whatever)


<------------------------------------------------------>
<--------- Passive / Actives / Spells Revamp ---------->
<------------------------------------------------------>

Actives :
	Actives are spells used by the player like any other
	Has 3 Tiers to unlock (Displayed as Spell, Spell+, and Spell++)
	
Passives :
	Add more interactions with Sex Bonus and Fluid Bonus
	New Plus upgrades for passives that alter their behaviour
		Plus upgrades have a high cost to unlock
		Not all passives will get a plus upgrade



Sexual Embrace : Unchanged (Free seduction spell, unlocked from the start)

Sexual Entice :
	No longer a starting spell, must be unlocked
	Attempt to seduce the target into consentual sex
	High Magicka Cost
	100% Success Rate on Soul Pets
		+ Improve Spell
			T1 : Base Spell - Touch Spell, High magicka cost
			T2 : Reduce Cost
			T3 : Becomes Ranged
		+ Improve Seduction Chance

Sexual Enrage :
	No longer a starting spell, must be unlocked
	Attempt to sexuce the target into assaulting you with sex (non-consentual animation)
	High Health Cost
	100% Success Rate on Soul Pets
		+ Improve Spell
			T1 : Base Spell - Touch Spell, High Health Cost
			T2 : Reduce Cost
			T3 : Becomes Ranged
		+ Improve Seduction Chance

Items :
	Soul of Force : Convert to giving SkillXP
	Specialty Stone : Convert to giving a large amount of HeartXP

<------------------------------------->
<--------- Passive Priority ---------->
<------------------------------------->

<>--------- Passive Priority : Passive Effort (Update Over-Time)

Backend
	GOAL : Transition to more stable and responsive options and remove standard polling as much as possible.
				Transition as much as I can to Events and various Triggers
				Optimize code to reduce game functions
				Reduce in-function logic and make new, global functions to streamline processes and improve consistency
				Ultimately make things easier to moddify and create
	Convert comment heading style from "ent/ - end/" system to generic header (Should make things easier to read without custom xml configs and promote better practices)
	Add more discriptive comment headers to functions to better explain how they work or what they're suppose to do (make it easier for others to glance at code and customize)
	Add caps to all 'generating' values to prevent overflow and add consistency over-time (Probably want to cap at 999,999,999) [Mostly to catch calculation errors without breaking the mod]
	Add cap to all stats/ranks/perks to prevent overflow errors
	Unify more calculations into their own separate functions (so they're more efficient and can be used multiple times)
	Remove unused variables and forms to reduce mod weight
Systems
Menu
Passives
Actives
Soul Pets
misc


<------------------------------------->
<--------- Highest Priority ---------->
<------------------------------------->

<>--------- Highest Priority : Effort irrelevant

Backend
Systems
	Make consuming Sexual Fluids while in a high arousal state slightly reduce some arousal
Menu
	Expand Status Screen to include details like BDSM Rankings, Passives Count, and maybe other general info like current player level
	Add Absorption Stats to Status Page
	make selecting a Help MCM entry bring up the highlight message in a debug.messagebox for easier reading and maybe expand info for some entries
Passives
Actives
Forge
Soul Pets
	In the MCM, check if there's a pet available before allowing renaming
	Add a script to the "pet" when summoned that manages items added to their inventory
		(This function will replace the current inventory transfer, take items added and move them to storage, then move them to player when returned)
	If there's no active pet, make "Train" find a random Alive pet if available
misc


<---------------------------------->
<--------- High Priority ---------->
<---------------------------------->

<>--------- High Priority : High Effort

Backend
	Add follower checks to DOM (have them follow to the Succubus Realm with the player)
	Remove csCooldown Spell (replace with non-spell version using an Actor Array)
	Re-write animCalc "Start Sex" code to be less redundant, more performant, and more flexible with more validity checks
Systems
	Add Hud Element for when Sex/Fluid Bonus' are active
		Could potentially add other Hud elements if I figure this one out, but these are the most important
	Add UI elements using UIextentions mod framework
	Change Drain Stats to be a curved scale (Increases will diminish with level, so lvl1=1 drain, lvl20=10 drain, lvl50=15 drain)
	Add ability to refund purchased Heart Levels
	Add combat submit state to Combat Seduction (NPCs enter Bleedout or Surrender state, losing aggro, instead of dieing, for example when in combat they will submit when reaching 0 HP)
		Make additional hits on Submit State characters cause death
		Add "activate" option to initiate interaction
	Remove Blood Chips as drop and replace it with a "Replace Body" Spell that turns bodies into blood chips (placing inventory in a new temporary bag/chest)
	Add "fluid exhausted" function to NPCs and PC (Basically where they won't give sperm/milk after a set period of time)
	Add "Mad Soul" items that spawn a hostile version of a creature/character
	Make Spirit/Tali reset aggro after a set period of time (so people that commit the most horrid of crimes by attacking them... jerks)
	Add "effects" to ingredient items (like milk/stones/ect) [Ensure the first effect is positive]
	Replace Perks system with an "evolving titles" system (Earn points through certain types of actions like Combat, Exploration, Sexual, ect to unlock better titles with perk bonuses)
	Add/Expand ability to overwrite or lock various stats in the Status MCM
	Make consuming sperm apply cum on face
	At High Arousal - Withdrawl state (state 3) have a slight building chance to randomly charm a nearby NPC and have them assault the player
		To implement this feature the "Start Sex" code needs to be re-written
Menu
	Passives MCM - display lvl of individual additions to passive skills
	Add Status Cap display to Passives Menu
Passives
	Add Passive "Horny Thorns" - Damage attackers when hit
	Make Saving Essence only use the stacks it needs too (Just like Formal Beauty's code)
	Add Passive that increases Status Cap gained per-level
		Also a passive that incraess Max Status Cap per level
	Add "Seductive Aura" passive that triggers random aggressor acts
	Change Enrage and Entice to scale their debuff based on Arousal
	Add notification to Enrage/Entice when they decreases Status
	Add passive that increases XP gained upon orgasm based on time since last orgasm
	Add ability to temporarily disable passives (can probably use "defaults" button to lock skills)
	Add passive with a chance to cast "Soul Trap" on attacked targets
	Change Devious Partner Passive 2, change from grant Gold on Orgasm to grant a chance to steal an item upon orgasm (non-solo acts only of course)
	Add passive that grants bonuses based on how many titles have been aquired
	Add passive that allows drain from otherwise un-drainable sources (Specifically those already drianed completely or those immune)
	Add passive upgrade to Masochist that adds HeartXP when hit
Actives
Forge
Soul Pets
	Separate Pet Target Spell into Pet Command Spell for pet functions and Pet Soul Replication for Soul Replication
	Have pets store their bonus obtained (or drained) Status Caps (ex. take their base status when spawned and then when they despawn store the difference in base stat)
	Add "Pets" Dungeon to Succubus Realm (essentially a jail-like area with pets and captured NPCs)
	Add check to soulpets when summoned to save inventory and exclude it from transfer when returning (aka, remove base spawn items when transferring to player)
	Make 'target for options' spell a ranged spell with a visible "beam"
		Make replicating souls require a distance to target
	Add "spontanious training" option, pets will randomly assault the player with a sex act to gain XP
		Potentially make a building 'meter' where every chance the check fails it increases in likelyhood
		could also trigger on random NPCs and not just the player
		Only effect active pet to avoid issues with despawns and out-of-cell triggers
	Add a "Pet Reset" feature to the mkove pet option to level up pet
		This uses the Reset object reference command, move to the pet spawn, re-add and re-calculate all the stats, then move pet to player like normal
		This will help level up pets even if a player doesn't ever want to un-summon them
	Create "Pet Status 3D Array" to track current stats and stat changes
		With this functional, Pet Drain could be re-enabled since it would be used to re-apply stat differences
		Could be used to dynamically moddify stats without losing the 'base' stats, which can re-apply on summon
misc

<>--------- High Priority : Low Effort

Backend
	Change Checking Status Caps to a SuH_Fun Function (For easy changing)
	Add timer for Calm during act spell so it doesn't get stuck (add to advanced checks in SuQuest maybe?)
	Make an "Increase Cap" function in _Fun (so it can be used globally and keep consistency)
	Switch Regal Glow armor use "unequip" action on player
Systems
	Add option to disable specific drain types (disable stamina only for example)
	Combat Seduction - Make being attacked end animations
	Add SP to Skill Points option
	Make Combat Seduction Cooldown Configurable (currently defaults to 5 seconds) [Make it cap between 0 and 60 seconds]
	Add ability to disable player drain benefits
	DOM Lose Items : Check for Quest Item tag when removing items
	Remove Heart Levels "Tracking" feature to ease development (feature is annoying to maintain with changes)
Menu
	Fix "Increase Rating" in Passives MCM so that it will update the "current rating" values appropriately ("Body xx : Desire xx :")
	Move optional spell options into the "Actives" menu
	Add/Expose SuH_SETgametimemod in Settings MCM
		This is for players to configure gametime scale if they use a game-time altering mod
	Add Max Sex/Fluid Bonus display to Status MCM
		Concerned this will clutter the UI, maybe add it to the highlight info?
Passives
	Add passive that generates HeartXP over time while Sex Bonus is active
	Add Caps to any passives that directly affect "Vanilla Gameplay" balance (stuff like extra armor, excessive stats/damage/ect)
Actives
Soul Pets
	Add option for pets to unfollow but not teleport (stays in location they are desummoned in)
	Add inventory access to soul pets
	add a name replacement when name is blank in the soul pets menu (for modded creatures that don't set name)
	Add ActorBase Search for Pet Calculations for XP/Level/Spells/ect (Similar to how add/remove works - could also make this its own function)
	Add "Make Pets Essential" for Soul Pets
	Add option to switch around Soul Pet Slots (ex. Move Slot5 to Slot3 [store 3 to temp vars, move slot5 into slot3, move temp vars into slot5])
	Add more consumable 'soul stones' that contain different pets to be slotted
Forge
	Make Soul Forge option to make Blood Chips from Health Cap (10:1) into a slider
misc

<>--------- High Priority : Unknown Effort

Backend
	remove/replace SuH_CHKcsplayerattack with more effective methods
	Add more 'optional' effects to high arousal states
Systems
Menu
Passives
Actives
Forge
Soul Pets
misc


<--------------------------------->
<--------- Low Priority ---------->
<--------------------------------->

<>--------- Low Priority : High Effort

Backend
Systems
	Have desire slow generation the more desire is currently held
	Add physical shrines to level skills in Succubus Realm (Could also create a spawnable version in the world)
	Add spell-toggle for some settings (Specifically "Allow Drain" and "Drain Always Kills")
	Make "End Act on Attack" configure based on percent health rather than direct toggle
	Add option/checking for Combat Seduction that will make NPCs only submit if your drain will kill them (rough estimate - make this option a scaler, so at 1 it'll set Health Threshold equal to Health Absorb, while 10 will set it to 10 times Health Absorb)
	Add "Cheat Page" to MCM for increasing values and adding items
	Add optional HUD elements for various status' and effects
	Add Death Drop "Soul of Arousal" - increases Arousal by 80%
	When males orgasm and Sperm distribution is enabled, check if the animation ejaculates internally or externally
		If internal have reciever consume sperm immediately
		If external, give sperm as an item instead
		(Could technically do the same for female breast milk using "Breast Feeding" animations)
	Add support for non-player succubus character in new sex management code
		This should be easy to accomplish even with simplified code, using the player code but replace playerRef with an actorRef
		use the new _Fun "drain from" function
		can simplify code by removing player specific contents
	Re-Implement "Make NPCs Essential During Act" in a more functional way
		This is currently disabled/broken since I don't know when (code was commented out)
	Add "Create Spawn Point" with visuals for Death Override Mode
	Add some form of indicator when High Arousal state decreases Max Status
	Add Healing Visual to Formal Beauty
Menu
	Make no-name items not appear in Soul Forge MCM
	Make MCM for passive increases preview effects of leveling them up
	Add Arousal State trigger points (percentages) to MCM
	Make Heart Level increases potentially a slider (At least status caps)
		Before doing this I could add multiple options to increase at different intervals
Passives
	Make "Fertile Hunt" Available - Drain Magicka Over Time
	Add passive that extends drain amounts
	In the MCM add wording/indicators for when a passive is capped without having to be selected
		Can probably just replace the unlock count to "Max" or something
Actives
	Spell to absorb remaining stacks from dead characters
		Make spell scale the percentage / ratio received, starting relatively low at T1 and nearing 100% at T3
Forge
	Add ability to make sets of items to be crafted 'on the fly' with Forge Self Spell (Also add spell to the player)
	Add re-sort (change slot) option for Soul Forge memory entries [similar to pets system]
	Add consumable souls that add items to Soul Forge memory (without needing to Analyze)
Soul Pets
	Way to display Soul Pets stats (probably implement a dialogue menu, will need to investicate spacing and such. Probably use the Pet Spell interface as an example)
	Add "Soul Capture" mechanic where slain characters can be "captured"
	Add "Clone" souls for NPC like-characters (Spirit/Tali)
	Allow Soul Pets to "gangbang" NPCs or the Player if multiple Soul Pets are in an area (make it optional in Settings)
		Could be complicated in-terms of checking for SexLab animations so I'll need plenty of validity checks for this to run
	Add "create return point" for pets to make them return to a custom home location when the player leaves the area
misc
	Add 'dummy effect' to spells and effects that don't have effects/spells (This way when people try to clean the mod, which they shouldn't, they at least won't accidentally remove required spells and effects)

<>--------- Low Priority : Low Effort

Backend
Systems
	Add drain/stack scaling based on sexlab timers
	Make SacChest increase in 'level' as fed which increases XP given
	Add option to auto-use Soul Items when acquired (like soul of experience or soul of force)
	Display notification when "Devious Partner" can't steal any more gold for that animation
	Change "Make Characters Essential during act" use a faction for checks instead of a spell effect
		This would help prevent bugs
	Add "Animal" varients for Sperm and Milk (Purely for roleplay purposes, no functional difference)
	Add "Own" or "Succubus" varients for Sperm and Milk (Purely for roleplay purposes, no functional difference)
Menu
	Add way to configure Arousal Gain (SuH_PCSarousalgainmulti)
	Organize "Balance" related settings into its own category
		This will help new players know what they can mess with if they want to change the mod's balance (or what to avoid if they want the mod's default behaviour)
Passives
	Add passive where player prefers Consentual, being victim, or being aggressor
		Reward bonuses like extra Sex Bonus or HeartXP
	Add passive that increases bonuses for high Arousal (Synergy with Seducer Passive)
Actives
Forge
Soul Pets
	Add check if creatures are enabled in SexLab, if not then remove "Train" option from petself spell
misc

<>--------- Low Priority : Unknown Effort

Backend
Systems
	Add 'Burner' Passive that can be used as a BDSM Rating sink if players so choose (no idea what this should be tho...)
Menu
Passives
Forge
Soul Pets
	Add name of followers from Soul Pets into NPC Data
misc


<------------------------------->
<--------- Concepting ---------->
<------------------------------->

Backend
Systems
	Titles Ideas
		Combat Scoring
			Include In-Combat time (estimate)
			Times hit, Times attacking
			Kill Count
		Sexual Scoring
			Count Time in-act
			Count Orgasms for self and partners
			Fluid Consumption tracking
			Partner Types
	Add passives or actives for time of day bonuses (TimeOfDayGlobalProperty.GetValue())
	Add "Arousal State Changes" - Change targets and gain rates based on different states
		(Integrations with arousal mods may be the best way to do this as it's a LOT of work...)
Menu
Passives
	Idea (Compatibility Concerns) : Make Passives activate spell effects instead of always having their own 'invisible' effects
		Example : Succubus Thorns would apply a buff when hit instead of just immediately reflecting damage
	Add passive for wearing cum
Actives
	Add "cupid's arrow" type skill where the projectile has a chance to make the target uncontrollably horny (Start sex scene if they can find a partner)
	Takes drain count since last sex act and adds attack
		(or something, just trying to find a use for this stupid detection system I added for the drain visuals)
Forge
Soul Pets
misc


